package demo04;

/*
 * 如果一个类是定义在一个方法内部的，那么这就是一个局部内部类。
 * 局部：只有当前所属的方法可以使用它，出了方法就不能使用了。
 * 
 * 定义格式：
 *  修饰符 class 外部类名称 {
 *      修饰符 返回值类型 外部类方法名称(参数列表) {
 *          class 局部内部类名称 {
 *              // ...
 *          }
 *      }
 *  }
 * 
 * 注意事项：
 * 类的权限修饰符：public > protected > (default) > private
 * 定义一个类的时候，权限修饰符有以下规则：
 * 1. 外部类：public / (default)（外部类的外部没有其他类，所以想要访问外部类就不能将其保护protected或私有化private）
 * 2. 成员内部类：public / protected / (default) / private
 * 3. 局部内部类：不能加权限修饰符！
 */
public class Outer { // 外部类
    public void methodOuter() {
        class Inner { // 局部内部类
            int num = 10;

            public void methodInner() {
                System.out.println(num); // 10
            }
        }
        new Inner().methodInner(); // 在该方法中创建局部内部类对象并调用其方法
    }
}
